package cn.edu.lcvc.ebuy_ruanjian2.dao;

import cn.edu.lcvc.ebuy_ruanjian2.model.Admin;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * 用于Admin类（admin表）的数据库交互
 * */
public interface AdminDao {
    /**
     * 根据账户名和密码去查找admin表中有多少条记录
     * @param username 账号名
     * @param password 密码
     * @return  匹配满足条件的记录个数
     * */
    int countByUsernameAndPassword(@Param("username") String username, @Param("password") String password);

    /**
     * 根据账号名在数据库中读取指定的记录并返回
     * @param username 账户名
     * @return  null表示没有找到相关的记录
     * */
    Admin findByUsername(String username);

    /**
     * 查找出admin表中所有记录
     * @return
     * */
    List<Admin> findAll();

    /**
     * 根据管理账户id删除指定的账户
     * @param id
     * @return 被删除的记录数
     * **/
    int deleteById(Integer id);

    /**
     *保存账户记录
     * @param admin
     * @return 返回保存成功的记录
     * **/
    int save(Admin admin);

    /**
     * 根据id到admin表中查找对应的记录信息，并封装成Admin实体对象返回
     * @param id
     * @return  null表示没有找到
     * **/
    @Select("select * from admin where id=#{id}")
    Admin findById(Integer id);

    @Update("update admin set name=#{name},sex=#{sex} where id=#{id}")
    int update(Admin admin);
}